import java.util.*;

public class day230321 {
    // 数组中出现次数超过一半的数字

    // 不一样的数抵消掉, 因为要求的数超过了一半, 所以肯定不会被抵消完
    public static int MoreThanHalfNum_Solution (int[] numbers) {
        int result = 0;// 记录当前较多的数
        int times = 0;// 记录当前较多的数的个数

        // 从 1 开始
        for (int i = 0; i < numbers.length; i++) {
            if (times != 0) {
                // 不为0
                if (numbers[i] != result) {
                    // 不相等
                    // 抵消一个
                    times--;
                } else {
                    // 相等
                    times++;
                }
            } else {
                result = numbers[i];
                times = 1;
            }
        }
        return result;
    }

    // 使用一个栈, 进行抵消
    public static int MoreThanHalfNum_Solution1 (int[] numbers) {
        Stack<Integer> stack = new Stack<>();
        for (int i = 0; i < numbers.length; i++) {
            if (stack.isEmpty()) {
                // 栈空, 入栈
                stack.push(numbers[i]);
            } else {
                // 不空
                if (stack.peek() != numbers[i]) {
                    // 不同, 两个抵消
                    stack.pop();
                } else {
                    // 相同, 入栈
                    stack.push(numbers[i]);
                }
            }
        }
        return stack.peek();
    }


    // 字符串中找出连续最长的数字串

    // 在遍历过程中, 拼接出每个数字串, 比较长度
    public static void main2(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        String ret = "";
        StringBuilder stringBuilder = new StringBuilder();
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            if (Character.isDigit(ch)) {
                // 是数字, 拼接
                stringBuilder.append(ch);
            } else {
                // 不是数字
                if (stringBuilder.length() > ret.length()) {
                    ret = stringBuilder.toString();
                }
                // 初始化
                stringBuilder = new StringBuilder();
            }
        }
        // 判断最后一串数字
        if (stringBuilder.length() > ret.length()) {
            ret = stringBuilder.toString();
        }
        System.out.println(ret);
    }

    // 找到最长数字串的下标和个数, 组后裁剪
    public static void main1(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String str = scanner.nextLine();
        // 记录下标
        int flag = 0;
        // 计数
        int count = 0;
        for (int i = 0; i < str.length(); i++) {
            char ch = str.charAt(i);
            // 计数
            int tmpC = 0;
            // 记录下标
            int tmpF = i;
            while (Character.isDigit(ch)) {
                // 遍历长度,记录数量
                tmpC++;
                i++;
                if (i == str.length()) {
                    break;
                }
                ch = str.charAt(i);
            }
            // 比较大小
            if (tmpC > count) {
                flag = tmpF;
                count = tmpC;
            }
        }
        // 裁剪字符串
        System.out.println(str.substring(flag, flag + count));
    }

}


